Low-complexity bilateral filter (BF) implementation in a data processing device

ABSTRACT

A method includes implementing, through a processor communicatively coupled to a memory and/or a hardware block, a Bilateral Filter (BF) including a spatial filter component and a range filter component, and implementing the spatial filter component with a low-complexity function to allow for focus on the range filter component. The method also includes determining, through the processor, filter tap value(s) related to the range filter component as a function of radiometric distance between a pixel of a video frame and/or an image and other pixels thereof based on a pre-computed corpus of data related to execution of an application in accordance with a filtering requirement of the pixel by the application. Further, the method includes constraining, through the processor, the filter tap value(s) to a form i×base based on the BF implementation. i is an integer and base is a floating point base.

FIELD OF TECHNOLOGY

This disclosure relates generally to video/image filtering and, moreparticularly, to a low-complexity bilateral filter (BF) implementationin a data processing device.

BACKGROUND

A data processing device such as a mobile device (e.g., a mobile phone,a tablet) may have a low processing capability associated therewith. Auser of the data processing device may view video data thereon. Videoframes of the video data may include edges therein. An edge may be aportion of a video frame around which there is a change in imageintensity level above a threshold value. For edge preservation, the dataprocessing device may include a bilateral filter (BF) implemented in apost-processing engine executing on a processor thereof. The BF may berepresented as a product of two Gaussian functions, viz. a spatialGaussian function and a range Gaussian function, divided by anormalization factor. The complexity of the BF representation may not beconducive to execution of the post-processing engine on the dataprocessing device. Thus, the user may be able to enjoy only limitedcapabilities provided through the post-processing engine.

SUMMARY

Disclosed are a method, a device and/or a system of a low-complexitybilateral filter (BF) implementation in a data processing device.

In one aspect, a method includes implementing, through a processorcommunicatively coupled to a memory and/or a hardware block, a BilateralFilter (BF) including a spatial filter component and a range filtercomponent, and implementing, through the processor and/or the hardwareblock, the spatial filter component with an appropriate function havingreduced complexity compared to a Gaussian function to allow for focus onthe range filter component. The method also includes determining,through the processor, filter tap value(s) related to the range filtercomponent as a function of radiometric distance between a pixel of avideo frame and/or an image and other pixels thereof based on apre-computed corpus of data related to execution of an application inaccordance with a filtering requirement of the pixel by the application.

Further, the method includes constraining, through the processor, thefilter tap value(s) to a form i×base to further reduce complexity offiltering of the pixel based on the BF implementation. i is an integerand base is a floating point base.

In another aspect, a data processing device includes a memory, and aprocessor communicatively coupled to the memory. The processor isconfigured to execute instructions to implement a BF including a spatialfilter component and a range filter component, and instructions toimplement the spatial filter component with an appropriate functionhaving reduced complexity compared to a Gaussian function to allow forfocus on the range filter component. The processor is also configured toexecute instructions to determine filter tap value(s) related to therange filter component as a function of radiometric distance between apixel of a video frame and/or an image and other pixels thereof based ona pre-computed corpus of data related to execution of an application inaccordance with a filtering requirement of the pixel by the application.

Further, the processor is configured to execute instructions toconstrain the filter tap value(s) to a form i×base to further reducecomplexity of filtering of the pixel based on the BF implementation. iis an integer and base is a floating point base.

In yet another aspect, a system includes a server and/or a storagemedium including pre-computed corpus data related to execution of anapplication. The system also includes a data processing devicecommunicatively coupled to the server and/or the storage medium. Thedata processing device includes a processor communicatively coupled to amemory. The processor is configured to execute instructions to implementa BF including a spatial filter component and a range filter component,and instructions to implement the spatial filter component with anappropriate function having reduced complexity compared to a Gaussianfunction to allow for focus on the range filter component.

The processor is also configured to execute instructions to determinefilter tap value(s) related to the range filter component as a functionof radiometric distance between a pixel of a video frame and/or an imageand other pixels thereof based on the pre-computed corpus of data inaccordance with a filtering requirement of the pixel by the application.Further, the processor is configured to execute instructions toconstrain the filter tap value(s) to a form i×base to further reducecomplexity of filtering of the pixel based on the BF implementation. iis an integer and base is a floating point base.

The methods and systems disclosed herein may be implemented in any meansfor achieving various aspects, and may be executed in a form of anon-transitory machine-readable medium embodying a set of instructionsthat, when executed by a machine, cause the machine to perform any ofthe operations disclosed herein.

Other features will be apparent from the accompanying drawings and fromthe detailed description that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments of this invention are illustrated by way of example andnot limitation in the figures of the accompanying drawings, in whichlike references indicate similar elements and in which:

FIG. 1 is a schematic view of a data processing system, according to oneor more embodiments.

FIG. 2 is a schematic view of separability of a Bilateral Filter (BF)implementation in a data processing device of the data processing systemof FIG. 1 into a horizontal filter and a vertical filter, according toone or more embodiments.

FIG. 3 is a schematic view of an implementation of the horizontal filterof FIG. 2, according to one or more embodiments.

FIG. 4 is a schematic view of a server of the data processing system ofFIG. 1 including a processor communicatively coupled to a memory,according to one or more embodiments.

FIG. 5 is a process flow diagram detailing the operations involved in alow-complexity BF implementation in the data processing device of FIG.1, according to one or more embodiments.

Other features of the present embodiments will be apparent from theaccompanying drawings and from the detailed description that follows.

DETAILED DESCRIPTION

Example embodiments, as described below, may be used to provide amethod, a device, and/or a system of a low-complexity bilateral filter(BF) implementation in a data processing device. Although the presentembodiments have been described with reference to specific exampleembodiments, it will be evident that various modifications and changesmay be made to these embodiments without departing from the broaderspirit and scope of the various embodiments.

FIG. 1 is a schematic diagram of a data processing system 100, accordingto one or more embodiments. In one or more embodiments, data processingsystem 100 may include one or more server(s) (e.g., server 160) and oneor more data processing device(s) (e.g., data processing device 170)configured to utilize the services provided through the one or moreserver(s) (e.g., through a computer network 106 such as Internet, a WideArea Network (WAN) and a Local Area Network (LAN)). Alternately, in oneor more embodiments, data processing system 100 may merely include dataprocessing device 170 and processing/optimization of data to bediscussed herein may be performed locally therethrough. In one or moreembodiments, data processing device 170 may be a desktop computer, alaptop computer, a notebook computer, a netbook or a mobile device suchas a tablet or a mobile phone. Other forms of data processing device 170are within the scope of the exemplary embodiments discussed herein.

In one or more embodiments, data processing device 170 may include aprocessor 102 (e.g., a Central Processing Unit (CPU), a GraphicsProcessing Unit (GPU)) communicatively coupled to a memory 104 (e.g., avolatile memory and/or a non-volatile memory); memory 104 may includestorage locations addressable through processor 102. In one or moreembodiments, data processing device 170 and/or server 160 may beemployed in one or more applications such as video enhancement, cameranoise reduction, video coding artifact reduction, video abstraction andoptical flow estimation. In order to cater to the filtering requirementsof image/video processing associated with the aforementioned one or moreembodiments, a bilateral filter (BF) may be implemented in dataprocessing device 170. Specifically, in the case of data processingdevice 170 being a mobile device, the BF may be used both during videocapture and video playback.

Video frames processed through data processing device 170 may includeedges therein. An edge may be a point of a video frame around whichthere is a change in image intensity level above a threshold value. Asthe edge defines a boundary of transition between image intensitylevels, the edge may be a feature of the video frame worth preservingduring filtering. Although the edge-preserving capability of the BF isextremely useful, the BF may provide for high complexity of processingdue to a non-linear nature thereof. The high complexity may not beconducive to the implementation of the BF (FIG. 1 shows a BF engine 110to be executed through processor 102 as being stored in memory 104; BFengine 110 may include the requisite set of instructions to provide thefunctionalities associated with the BF) in a power-constrained dataprocessing device 170 such as a mobile device. Similarly, the non-linearadaptive BF may incur silicon cost when implemented as a hardware blockassociated with data processing device 170.

An output of an example BF implemented in data processing device 170 forthe edge preservation discussed above may generically be represented as:

$\begin{matrix}{{{BF}\lbrack I\rbrack}_{p} = {\frac{1}{w_{p}}{\sum\limits_{q \in S}\;{{G_{\sigma_{s}}\left( {{p - q}} \right)}{G_{\sigma_{r}}\left( {{I_{p} - I_{q}}} \right)}I_{q}}}}} & (1)\end{matrix}$In words, for an input video frame 122 _(1-N) I of video data 116(exemplary embodiments discussed herein are also applicable to imagedata) shown as being stored in memory 104, the output BF[I]_(p) for apixel p may be expressed as example Equation (1). Here, σ_(s) and σ_(r)are the spatial deviation and the radiometric deviation respectively;G_(σ) _(s) is a Gaussian function associated with spatial pixel location(spatial filter portion) and G_(σ) _(r) is a Gaussian functionassociated with pixel intensity (range filter portion); and thenormalization factor W_(p) is given by:

$\begin{matrix}{W_{p} = {\sum\limits_{q \in S}{{G_{\sigma_{s}}\left( {{p - q}} \right)}{G_{\sigma_{r}}\left( {{I_{p} - I_{q}}} \right)}}}} & (2)\end{matrix}$

The normalization factor may ensure that filter weights for all pixelsadd up to 1. Thus, the weights of the BF may depend on both the spatialGaussian function and the range Gaussian function. The BF may be adaptedby varying σ_(s) and/or σ_(r). The BF is known to one skilled in theart; therefore, detailed discussion of concepts associated therewith hasbeen skipped for the sake of brevity and clarity.

The Gaussian exponential functions in example Equations (1) and (2) maycontribute to computational complexity of the BF. Although Gaussianfunctions discussed above may predominantly be used to represent thespatial filter portion and the range filter portion of the BF, thegeneral representation of the BF allows for a more expanded family offunctions to be utilized. Exemplary embodiments exploit the possibilityof a reduction in complexity of the BF implementation, as will bediscussed below.

The basic BF implementation may be separated into the spatial filterportion, the range filter portion and a normalization portion, as seenin example Equation (1). To generalize the formulation of the BF,example Equations (1) and (2) may be rewritten as example Equations (3)and (4)

$\begin{matrix}{{{BF}\lbrack I\rbrack}_{p} = {\frac{1}{w_{p}}{\sum\limits_{q \in S}{{F_{\sigma_{s}}\left( {{p - q}} \right)}{F_{\sigma_{r}}\left( {{I_{p} - I_{q}}} \right)}I_{q}}}}} & (3)\end{matrix}$

$\begin{matrix}{W_{p} = {\sum\limits_{q \in S}{{F_{\sigma_{s}}\left( {{p - q}} \right)}{F_{\sigma_{r}}\left( {{I_{p} - I_{q}}} \right)}}}} & (4)\end{matrix}$

Here, F_(σ) _(s) is a general function (e.g., Gaussian, non-Gaussian)associated with spatial pixel location and G_(σ) _(r) is a generalfunction (e.g., Gaussian, non-Gaussian) associated with pixel intensity(range).

In one or more embodiments, the generalized formulation of the BF asincluding a spatial filter portion and a radiometric/range filterportion may render the BF amenable to a separable implementation, atleast with respect to the spatial filter portion, to increasecomputational speed of the filtering. In other words, in one or moreembodiments, the spatial filter portion of the BF may be applied acrossone spatial dimension (e.g., say, x-axis) and the intermediate outputmay then be filtered in other spatial dimension(s) (e.g., in the case ofa two-dimensional (2D) image, the other dimension is a dimensionalperpendicular to the x-axis, viz. y-axis). FIG. 2 shows the separabilityof the BF implementation into a horizontal filter 202 (e.g., x-axis) anda vertical filter 204, according to one or more embodiments.

In addition, in one or more embodiments, the envelope of the spatialfilter portion may be simplified into a rectangular function to allowfor the focus to be solely on the radiometric/range filter portion. Inone or more embodiments, even in the case of the range filter portion, aLookup table (LUT) (e.g., LUT 124 stored in memory 104 or implemented ina hardware block associated with data processing device 170) may beutilized to pre-compute and store function values for variousradiometric distances. Thus, in the simplest form, the spatial filterportion corresponding to horizontal filter 202 may be a 1×N rectangularfilter (N being a positive integer). It should be noted thatnon-Gaussian non-complex functions other than the simple rectangularfunction may be utilized instead. For example, in certain applicationsof the BF, a series of rectangular functions may be utilized in thespatial filter portion.

The LUT 124 based approach discussed above may be based on picking apre-calculated filter tap value from LUT 124 for a correspondingradiometric difference |I_(p)−I_(q)|; here, pixels close in intensitylevels to a current pixel may be associated with higher weights/filtertap values, thereby contributing to reduction in noise due to diffusionof edges. In one or more embodiments, the filter tap values may bestatic due to computation thereof in advance. In an example case of an8-bit video frame 122 _(1-N), entries of LUT 124 may vary from 0 to 255.For each value obtained, the filter output may have to be calculated anddivided by the normalization factor. Exemplary embodiments provide for ameans to dispense with the aforementioned division, as will be discussedbelow.

In one or more embodiments, following the accomplishment of the rangefilter operation through LUT 124 and the normalization operation, afiltered output of the aforementioned set of operations may be appliedto a vertical filter 204 to produce a final output (e.g., output 206) asthe filtered video frame. In the abovementioned example of the spatialfilter portion being initiated through a 1×N rectangular filter,vertical filter 204 may be an appropriate N×1 rectangular filter.

In one or more embodiments, the range filter portion may also besimplified through a novel technique to compute candidate tap valuesthereof. Although the filter tap values can be computed throughsimplifying an exponential function to various extents, exemplaryembodiments provide for a novel technique to utilize applicationspecific data for computing cluster(s) that best describe theprospective candidate tap values of the range filter portion. FIG. 1shows an application 188 executing on data processing device 170. In oneor more embodiments, data processing device 170 may have a history ofexecution of application 188 associated therewith. In one or moreembodiments, said history of execution may generate enough data suitablefor clustering. Portions of the generated data may have also been runthrough exponential (and/or non-exponential) forms of the functionimplementation representing the range filter portion. In one or moreembodiments, by clustering the aforementioned data to choose the bestsuited candidate filter tap values, the complexity of the normalizationportion of the BF implementation may also be reduced.

In one or more embodiments, the centroids of the abovementioned clustersmay be the potential candidate filter tap values. Further, in one ormore embodiments, through restricting the aforementioned centroids and,hence, the potential candidate filter tap values to a form i×base (wherei is an integer and base is a floating point base), the normalizationoperation may be restricted to a simple integer division (the floatingpoint base portion may be dispensed with due to presence thereof in anumerator and a denominator of the BF output equation). In one or moreembodiments, steering the centroids of the clusters toward specificfilter tap values may be put forth as an optimization problem subject toa set of constraints as:

$\begin{matrix}{{\underset{\underset{{\{ i\}},{base}}{︸}}{\arg\min}{{C - {\hat{C}\left( {\left\{ i \right\} \times {base}} \right)}}}^{p}},{\left\{ i \right\} \in {\mathbb{z}}},{{base}\; \in {\mathbb{R}}}} & (5)\end{matrix}$

In example optimization (5), C is the set of centroids found throughclustering, Ĉ is the new filter realized from the clustering that isrepresentable as an integer multiple of the floating point base,{i}×base. Example optimization (5) may solve for a set of {i}×base forwhich ∥C−Ĉ({i}×base)∥^(p) is at a minimum value thereof. p is a suitableindex to which ∥C−Ĉ({i}×base)∥ is raised. If required, furtherconstraints may be imposed on the set of integers {i}; for example, thecandidate filter tap values may be made to be bit-shift friendly (to bediscussed below). It should be noted that the clustering operationand/or the steering of the centroids may be performed as pre-processingoperation(s); the aforementioned pre-processing operation(s) may notaffect the low-complexity filtering implemented through BF engine 110executing on data processing device 170.

In one or more embodiments, restriction of a length of the potentialcandidate tap values to an appropriate number may also restrict a sizeof an inverse lookup table (e.g., ILUT 126 stored in memory 104; ILUT126 is to account for the normalization operation). Thus, in one or moreembodiments, an ultra-low complex BF filter may be realized through BFengine 110.

In one or more embodiments, as mentioned above, the candidate filter tapvalues may be steered to be amenable to bit-shifting to further reducethe complexity of the BF implementation. The reduction in complexity mayinclude dispensing with computationally expensive operations such asmultiplication and division. In the case of data processing device 170including a low-end processor 102, the aforementioned reduction incomplexity may be critical. It should be noted that the functionsdiscussed herein with respect to the range filter portion and/or thespatial filter portion are mere examples; exemplary embodiments providefor flexibility in the choices therein; all low-complexity candidate BFsthat maintain the edge-preserving nature of the traditional BF arewithin the scope of the exemplary embodiments discussed herein.

In one or more embodiments, to optimize the amount of space consumed byILUT 126, bit locations associated with entries thereof may be fullyutilized. In one or more embodiments, each inverse value of an integer imay be stored in ILUT 126 in the form (2^(k)/i also being an integer).In one or more embodiments, k may be chosen such that as manysignificant bits of the inverse value may be stored in ILUT 126. In oneor more embodiments, 2^(k) may then be bit-shifted later. In one or moreembodiments, companding may be implemented to store both k and a set of2^(k) and i (and/or 2^(k)/i) in ILUT 126. For example, when ILUT 126includes 8-bit entries, the first 5 bits of each entry may be related tothe 5 significant bits of the mantis sa/significand; the last 3 bits maybe related to the value of k, and may indicate the number of bit-shiftsrequired. It should be noted that the choice of the number of bits isnot limited to 8. Depending on the precision requirements of application188, the number of bits may exceed 8 or be less than 8.

In an example scenario, the intensity level for a current pixel may be150 and the intensity level for a preceding pixel 100. The |I_(p)−I_(q)|of 50 may be looked up in LUT 124 and the appropriate filter tapvalue(s) selected. As discussed above, the filter tap value(s) may bechosen through the clustering process. The clustering process may alsorestrict a number of appropriate filter tap value(s) to a small numberthat further reduces the size of LUT 124; search space in LUT 124 mayalso be reduced. Further, if the constraints deem that the number ofappropriate filter tap value(s) is, say, 11 and that the floating pointbase (base) is 1.25, the aforementioned filter tap value(s) may be 0,1.25, 2.5 and so on. Wherever filtering is done in video frame 122_(1-N), the associated filter tap value(s) may only be combination(s) ofthe aforementioned values. In the case of looking up a number with aninfinitely repeating decimal through ILUT 126, a maximum number ofsignificant bits of the repeating decimal may be incorporated in anentry of ILUT 126 to ensure that the filter computation is as accurateas possible.

Exemplary embodiments may also be explained in terms of catering to aparticular application 188. Consider a video capturing application on amobile phone (example data processing device 170) where sensor noise inlow light conditions is a major issue impacting quality. Here, exemplaryembodiments allow for computation of optimal yet low-complexity filtersby clustering data generated at various lighting conditions. Thus, asmall set of candidate range filter tap values may be generated, whichdirectly results in extremely fast lookup operation(s) from ILUT 126and, thereby, computation of the final filter values. The low complexityinvolved herein enables the BF to be used in power-constrainedapplications.

FIG. 3 summarizes the implementation of horizontal filter 202, accordingto one or more embodiments. In one or more embodiments, horizontalfilter 202 may have a corpus of input data 302 that is utilized duringthe clustering discussed above; the clustering may be a pre-computingprocess. In one or more embodiments, for a pixel of an input video frame122 _(1-N), LUT 124 may be searched (e.g., through the execution of BFengine 110 on processor 102) utilizing radiometric distances between thepixel and other pixels as an index to determine the potential candidatefilter tap values. As discussed above, in one or more embodiments,clustering engine 304 may enable the choice of the best candidate filtertap values (e.g., candidate filter tap values 306) from LUT 124. In oneor more embodiments, candidate filter tap values 306 may be fed to arange filter engine 308 that executes the range filter portionoperations associated with example Equation (3). Further, in one or moreembodiments, candidate filter tap values 306 may be fed to anormalization engine 310 that executes the normalization operationsassociated with example Equation (3).

In one or more embodiments, normalization engine 310 may leverage ILUT126 that includes entries stored in the form 2^(k)/i. In one or moreembodiments, data related to the most significant bits (MSB) of theentry may be combined with the output of range filter engine 308; thesubsequent output may be bit-shifted (e.g., through bit-shifting engine312) as indicated by the least significant bits (LSB) of the entry. Saidbit-shifting may account for dispensing with the division by thenormalization factor in example Equation (3). In one or moreembodiments, the final output (e.g., output 314) of horizontal filter202 may then be filtered through vertical filter 204 to arrive at output206.

It should be noted that LUT 124 and ILUT 126 may be implemented in asame table; further, LUT 124 and/or ILUT 126 may be implemented inhardware and/or software. Also, lookup tables are merely shown for thesake of example purposes. Alternate implementations such as executingfetching operations of “entries” directly from memory 104 are within thescope of the exemplary embodiments discussed herein.

Clustering engine 304 may execute on server 160; alternately, clusteringengine 304 may execute on data processing device 170. In one exampleembodiment, server 160 may provide the clustering as a service to dataprocessing device 170. An example implementation of clustering throughclustering engine 304 may involve k-means clustering; other forms ofclustering may also be implemented therein. All reasonablemodifications, implementations and/or applications are within the scopeof the exemplary embodiments discussed herein.

It should be noted that while the clustering discussed herein iseffectively utilized to steer the centroid(s) to filter tap value(s),other ways of determining the filter tap value(s) of the form i×basebased on corpus of input data 302 are within the scope of the exemplaryembodiments discussed herein. Further, while BF engine 110, LUT 124 andILUT 126 are preferentially shown as part of data processing device 170to address latency-critical applications, BF engine 110, LUT 124 and/orILUT 126 may also be part of server 160. In the case of the computingplatform of server 160 being virtualized to serve multiple clientdevices (e.g., data processing device 170), the low-complexity executionof BF engine 110 on server 160 may enable improved quality of servicetherefrom. Also, the aforementioned modification dispenses with issuesrelated to server 160 being a low-end device.

FIG. 4 shows server 160 including a processor 402 communicativelycoupled to a memory 404, in accordance with one or more alternateembodiments. Here, memory 404 may include BF engine 110 to be executedon processor 402, LUT 124 and/or ILUT 126. Data processing device 170 isshown as being communicatively coupled to server 160 through computernetwork 106 (e.g., Internet, a WAN, a LAN). In one or more embodiments,data processing device 170 may provide video data 116 to be filteredthrough server 160. FIG. 4 also shows clustering engine 304 and corpusof input data 302 as being stored in memory 404.

Last but not the least, the results of clustering engine 304 may betransmitted from server 160 to data processing device 170 to be utilizedthrough BF engine 110 (see the embodiment of FIG. 1). Alternately, theresults may be stored in memory 104 and/or made available on anon-transitory medium (e.g., storage medium) readable through dataprocessing device 170 and/or server 160 such as a Compact Disc (CD), aDigital Video Disc (DVD), and a hard drive. Variations therein arewithin the scope of the exemplary embodiments.

It should be noted that utilization of fixed-point arithmetic may enablerealization of a BF and all operations associated therewith in integerarithmetic; however, such an implementation may be computation/areaexpensive, whether in software or hardware. For example, a processorbased on ARM architecture may consume several cycles for a divisionoperation. Exemplary embodiments render the integer division redundantby:

a) effectively reducing the number of filter tap values throughclustering; this reduces a size of LUT 124 by providing for a smallnumber of possible combinations of the filter tap values, and

b) providing for filter tap values with low bit-width; this provides fora small ILUT 126; the division operation may be reversed by bit-shiftingdiscussed above.

In one or more embodiments, a combination of a) and b) may enableachieving ultra-low complexity normalization without sacrificingnumerical precision.

FIG. 5 shows a process flow diagram detailing the operations involved inrealizing a low-complexity BF, according to one or more embodiments. Inone or more embodiments, operation 502 may involve implementing, throughprocessor 102 and/or a hardware block, a BF including a spatial filtercomponent and a range filter component. In one or more embodiments,operation 504 may involve implementing, through processor 102 and/or thehardware block, the spatial filter component with an appropriatefunction having reduced complexity compared to a Gaussian function toallow for focus on the range filter component.

In one or more embodiments, operation 506 may involve determining,through processor 102, filter tap value(s) related to the range filtercomponent as a function of radiometric distance between a pixel of videoframe 122 _(1-N) and/or an image and other pixels thereof based on apre-computed corpus of data (e.g., pre-computed corpus of input data302) related to execution of application 188 in accordance with afiltering requirement of the pixel by application 188. In one or moreembodiments, operation 508 may then involve constraining, throughprocessor 102, the filter tap value(s) to a form i×base to furtherreduce complexity of filtering of the pixel based on the BFimplementation. In one or more embodiments, i may be an integer and basemay be a floating point base.

Although the present embodiments have been described with reference tospecific example embodiments, it will be evident that variousmodifications and changes may be made to these embodiments withoutdeparting from the broader spirit and scope of the various embodiments.For example, the various devices and modules described herein may beenabled and operated using hardware circuitry (e.g., CMOS based logiccircuitry), firmware, software or any combination of hardware, firmware,and software (e.g., embodied in a non-transitory machine-readablemedium). For example, the various electrical structures and methods maybe embodied using transistors, logic gates, and electrical circuits(e.g., application specific integrated (ASIC) circuitry and/or DigitalSignal Processor (DSP) circuitry).

In addition, it will be appreciated that the various operations,processes, and methods disclosed herein may be embodied in amachine-readable medium and/or a machine accessible medium compatiblewith a data processing system (e.g., data processing device 170).Accordingly, the specification and drawings are to be regarded in anillustrative rather than a restrictive sense.

What is claimed is:
 1. A method comprising: implementing, through atleast one of a processor communicatively coupled to a memory and ahardware block, a Bilateral Filter (BF) comprising a spatial filtercomponent and a range filter component; implementing, through the atleast one of the processor and the hardware block, the spatial filtercomponent with an appropriate function having reduced complexitycompared to a Gaussian function to allow for focus on the range filtercomponent; determining, through the processor, filter tap value(s)related to the range filter component as a function of radiometricdistance between a pixel of at least one of a video frame and an imageand other pixels thereof based on a pre-computed corpus of data relatedto execution of an application in accordance with a filteringrequirement of the pixel by the application; and constraining, throughthe processor, the filter tap value(s) to a form i×base to furtherreduce complexity of filtering of the pixel based on the BFimplementation, i being an integer and base being a floating point base.2. The method of claim 1, further comprising separably implementing thespatial filter component of the BF through providing for the filteringof the pixel across one spatial dimension and filtering of a subsequentoutput of the range filter component across another spatial dimension.3. The method of claim 1, further comprising at least one of:clustering, through the processor, the pre-computed corpus of data;steering, through the processor, a centroid of a cluster toward aspecific filter tap value based on optimization therebetween; andlimiting, through the processor, a number of the determined filter tapvalue(s) to a number of centroids determined based on the clustering. 4.The method of claim 1, further comprising at least one of: implementing,through the at least one of the processor and the hardware block, anormalization component of the BF to scale down an output of the rangefilter component by a normalization factor; implementing, through the atleast one of the processor and the hardware block, a repository ofinverse values related to the determined filter tap value(s) in thememory; optimizing, through the at least one of the processor and thehardware block, space consumed by the repository based on storing eachentry of the repository as 2^(k)/i, k being an integer chosen to enablestorage of a maximum number of significant bits of the inverse value inthe each entry; combining, through the at least one of the processor andthe hardware block, data related to the most significant bits (MSB) ofthe each entry with the output of the range filter component; andbit-shifting, through the at least one of the processor and the hardwareblock, an output of the combination in accordance with the leastsignificant bits (LSB) of the each entry to account for thenormalization factor.
 5. The method of claim 3, further comprising oneof: providing the pre-computed corpus of data through a server to a dataprocessing device comprising the processor and the memory; providing thepre-computed corpus of data to at least one of the server and the dataprocessing device comprising the processor and the memory through anon-transitory medium readable therethrough; and executing theclustering on the at least one of the server and the data processingdevice.
 6. The method of claim 4, comprising at least one of: storingthe determined filter tap value(s) in a lookup table implemented in atleast one of the memory and the hardware block; and implementing therepository of inverse values in one of: the lookup table and anotherlookup table.
 7. The method of claim 1, comprising implementing thespatial filter component with a rectangular function as the appropriatefunction.
 8. A data processing device comprising: a memory; and aprocessor communicatively coupled to the memory, the processor beingconfigured to execute instructions to: implement a BF comprising aspatial filter component and a range filter component, implement thespatial filter component with an appropriate function having reducedcomplexity compared to a Gaussian function to allow for focus on therange filter component, determine filter tap value(s) related to therange filter component as a function of radiometric distance between apixel of at least one of a video frame and an image and other pixelsthereof based on a pre-computed corpus of data related to execution ofan application in accordance with a filtering requirement of the pixelby the application, and constrain the filter tap value(s) to a formi×base to further reduce complexity of filtering of the pixel based onthe BF implementation, i being an integer and base being a floatingpoint base.
 9. The data processing device of claim 8, wherein theprocessor is further configured to execute instructions to separablyimplement the spatial filter component of the BF through providing forthe filtering of the pixel across one spatial dimension and filtering ofa subsequent output of the range filter component across another spatialdimension.
 10. The data processing device of claim 8, wherein theprocessor is further configured to execute instructions to at least oneof: receive an output of clustering of the pre-computed corpus of data,the clustering comprising steering of a centroid of a cluster toward aspecific filter tap value based on optimization therebetween, and limita number of the determined filter tap value(s) to a number of centroidsdetermined based on the received output of the clustering.
 11. The dataprocessing device of claim 8, wherein the processor is furtherconfigured to execute instructions to at least one of: implement anormalization component of the BF to scale down an output of the rangefilter component by a normalization factor, implement a repository ofinverse values related to the determined filter tap value(s) in thememory, optimize space consumed by the repository based on storing eachentry of the repository as 2^(k)/i, k being an integer chosen to enablestorage of a maximum number of significant bits of the inverse value inthe each entry, combine data related to the MSB of the each entry withthe output of the range filter component, and bit-shift an output of thecombination in accordance with the least LSB of the each entry toaccount for the normalization factor.
 12. The data processing device ofclaim 10, wherein one of: the processor is configured to executeinstructions to receive the pre-computed corpus of data through at leastone of a server and a non-transitory medium readable therethrough, andthe processor is configured to execute instructions associated with theclustering thereon.
 13. The data processing device of claim 11, whereinthe processor is configured to execute instructions to at least one of:stored the determined filter tap value(s) in a lookup table implementedin the memory, and implement the repository of inverse values in one of:the lookup table and another lookup table.
 14. The data processingdevice of claim 8, wherein the appropriate function is a rectangularfunction.
 15. A system comprising: at least one of a server and astorage medium comprising pre-computed corpus data related to executionof an application; and a data processing device communicatively coupledto the at least one of the server and the storage medium, the dataprocessing device comprising a processor communicatively coupled to amemory, and the processor being configured to execute instructions to:implement a BF comprising a spatial filter component and a range filtercomponent, implement the spatial filter component with an appropriatefunction having reduced complexity compared to a Gaussian function toallow for focus on the range filter component, determine filter tapvalue(s) related to the range filter component as a function ofradiometric distance between a pixel of at least one of a video frameand an image and other pixels thereof based on the pre-computed corpusof data in accordance with a filtering requirement of the pixel by theapplication, and constrain the filter tap value(s) to a form i×base tofurther reduce complexity of filtering of the pixel based on the BFimplementation, i being an integer and base being a floating point base.16. The system of claim 15, wherein the processor of the data processingdevice is further configured to execute instructions to separablyimplement the spatial filter component of the BF through providing forthe filtering of the pixel across one spatial dimension and filtering ofa subsequent output of the range filter component across another spatialdimension.
 17. The system of claim 15, wherein at least one of: at leastone of the server and the data processing device is configured tocluster the pre-computed corpus of data, the clustering comprisingsteering of a centroid of a cluster toward a specific filter tap valuebased on optimization therebetween, and the processor of the dataprocessing device is configured to limit a number of the determinedfilter tap value(s) to a number of centroids determined based on theclustering.
 18. The system of claim 15, wherein the processor of thedata processing device is further configured to execute instructions toat least one of: implement a normalization component of the BF to scaledown an output of the range filter component by a normalization factor,implement a repository of inverse values related to the determinedfilter tap value(s) in the memory, optimize space consumed by therepository based on storing each entry of the repository as 2^(k)/i, kbeing an integer chosen to enable storage of a maximum number ofsignificant bits of the inverse value in the each entry, combine datarelated to the MSB of the each entry with the output of the range filtercomponent, and bit-shift an output of the combination in accordance withthe LSB of the each entry to account for the normalization factor. 19.The system of claim 18, wherein the processor of the data processingdevice is further configured to execute instructions to at least one of:stored the determined filter tap value(s) in a lookup table implementedin the memory, and implement the repository of inverse values in one of:the lookup table and another lookup table.
 20. The system of claim 15,wherein the appropriate function is a rectangular function.